package com.example.yibu.interfaceTest;

/**
 * @author TS
 * @date 2024/11/4 18:02
 */
public class Printer implements Output,Product {
    private String [] printData = new String[MAX_CACHE_LINE];
    private int dataNum =0;
    public void out()//重写父接口Output的方法
    {
        while(dataNum>0) {
            System.out.println("打印机打印"+printData[0]);
            System.arraycopy(printData,1,printData,0,--dataNum);
            /*
            public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
            src: 源数组。
            srcPos: 源数组中的起始位置。
            dest: 目标数组。
            destPos: 目标数组中的起始位置。
            length: 要复制的元素数量。
            */
        }
    }

    public void getData(String msg)//重写父接口Output的方法
    {
        if(dataNum>=MAX_CACHE_LINE) {
            System.out.println("已满");
        }
        else {
            printData[dataNum++] = msg;
        }
    }

    public int getProduceTime(int a){//重写父接口Product的方法
        return a = ++a;
    }

/*    public static void main(String[] args)
    {
        //父接口可声明变量，但是不能创建实例，多态：声明的是Output，但是创建的实例是Printer
        Output O= new Printer();
        O.getData("xiuxiu");
        O.out();//直接调用输出的方法

        //父接口可声明变量，但是不能创建实例，多态：声明的是Output，但是创建的实例是Printer
        Product p = new Printer();
        System.out.println(p.getProduceTime(82));

        //所有接口类型的引用变量都可以直接赋值给Object类型的变量
        Object obj = p;
        Object obj1 = O;
    }*/


}
